#!/bin/bash

# 日志输出函数
log_info() {
    echo -e "\033[32m[INFO] $1\033[0m"
}

log_error() {
    echo -e "\033[31m[ERROR] $1\033[0m"
}

log_warning() {
    echo -e "\033[33m[WARNING] $1\033[0m"
}

# 加载环境变量
if [ ! -f "./.env" ]; then
    log_error "./.env 文件不存在"
    exit 1
fi


# 停止并删除容器
remove_container() {
    local container_name=$1
    if [ -z "$container_name" ]; then
        log_warning "容器名称为空，跳过"
        return
    fi

    if docker ps -a --format '{{.Names}}' | grep -q "^${container_name}$"; then
        log_info "停止容器: ${container_name}"
        docker stop "${container_name}" || log_warning "停止容器 ${container_name} 失败"
        
        log_info "删除容器: ${container_name}"
        docker rm "${container_name}" || log_warning "删除容器 ${container_name} 失败"
    else
        log_warning "容器 ${container_name} 不存在"
    fi
}

# 删除镜像
remove_image() {
    local image_name=$1
    if [ -z "$image_name" ]; then
        log_warning "镜像名称为空，跳过"
        return
    fi

    if docker images --format '{{.Repository}}:{{.Tag}}' | grep -q "^${image_name}$"; then
        log_info "删除镜像: ${image_name}"
        docker rmi "${image_name}" || log_warning "删除镜像 ${image_name} 失败"
    else
        log_info "镜像 ${image_name} 不存在"
    fi
}

# 主函数
main() {
    source ./.env

    local cleaned=false

    # 删除 dow 容器
    if docker ps -a --format '{{.Names}}' | grep -q "^${DOW_CONTAINER_NAME:-dow-test}$"; then
        remove_container "${DOW_CONTAINER_NAME:-dow-test}"
        cleaned=true
    else
        log_warning "容器 ${DOW_CONTAINER_NAME:-dow-test} 不存在"
    fi

    # 删除 gewechat 容器
    if docker ps -a --format '{{.Names}}' | grep -q "^${GEWECHAT_CONTAINER_NAME:-gewe}$"; then
        remove_container "${GEWECHAT_CONTAINER_NAME:-gewe}"
        cleaned=true
    else
        log_warning "容器 ${GEWECHAT_CONTAINER_NAME:-gewe} 不存在"
    fi

    if [ "$cleaned" = true ]; then
        log_info "清理完成"
    else
        log_warning "没有找到需要清理的容器"
    fi
}

# 执行主函数
main